It is a problem in the field of data communication and data storage systems that the demand for efficiency and reliability is driven by the need to exchange and store the vast amounts of data generated in modern information societies. The transmission of information across a wired or wireless communication channel, as well as the storage and retrieval of information using a magnetic or optical medium, are processes where the information is always subject to corruption by distortion and noise. Signals conveying the information can be so contaminated in this process that errors occur in the recovered information. Since the distortions and noise encountered over any communication channel or storage medium cannot be completely eliminated, these systems must be designed to control the effect of the errors so that the information transmitted or stored can be reliably recovered.
In 1948, Shannon's landmark channel coding theorem showed that, with proper channel encoding and decoding, the probability of errors induced by a noisy transmission channel or storage medium can be reduced to any desired level, provided that the information transmission rate is less than an upper limit defined by the channel, called the channel capacity. Channel encoding allows a certain level of errors caused by the noise to be correctable by the channel decoder and is often referred to as forward error-correction coding (FEC). The need for powerful forward error-correction coding techniques having a high level of error correction capability, as well as efficient encoding and decoding implementations, has become critically important in the design of modern digital communications and storage systems.
Because of their many similarities, typical digital communications and data storage systems can be specified in terms of the block diagram shown in FIG. 1. A sequence of information bits is transmitted across a channel or written into a storage medium. The channel encoder transforms this sequence of information bits into an encoded bit sequence or code sequence to enable the correction of errors. This is done by introducing redundant bits into the code sequence in a controlled manner. There are basically two classes of channel codes: block codes and convolutional codes. In a block code, the sequence of information bits is divided into successive non-overlapping blocks of length k, and each information block is encoded independently into a codeword of length n bits, resulting in a code rate of r=k/n. The set of 2k codewords, each of blocklength equal to n, is called an (n,k) block code. Block codes that have been widely used include Golay, BCH, and Reed-Solomon codes, as well as low density parity check (LDPC) codes. In a convolutional code, the encoder also processes a sequence of successive blocks of k information bits and produces a code sequence consisting of a sequence of successive n-bit code blocks. However, each encoded block of n bits depends not only on the corresponding k-bit information block occurring at the same time but also on m previous information blocks. Hence, the encoder has a memory of order m, which is often specified in terms of a code constraint length K=m+1. The code rate is again equal to r=k/n. Thus, the encoder maps the entire sequence of information bits into a single code sequence. While the sequence of information bits to be encoded may be of variable length in convolutional coding, it can also be set to a fixed length. In the latter case, the convolutional code can be viewed as a (possibly long blocklength) block code. A rate −½ and constraint length K=7 convolutional code has been used in many applications, as well as the more powerful turbo coding method using either parallel or serial concatenated convolutional codes.
Discrete symbols are generally not suitable for transmission over a wireline or wireless channel or for recording directly on a magnetic or optical storage medium. The role of the digital modulator (or data recording unit for storage) is to transfer the code sequence at the output of the channel encoder into a sequence of analog waveforms of some fixed duration T that is suitable for transmission (or for recording). Single carrier modulation waveforms are often used, such as binary phase shift keying (BPSK) and quadrature phase shift keying (QPSK), which modulate only the phase of a sinusoidal carrier, and quadrature amplitude modulation (QAM), which modulates both the carrier amplitude and phase. The digital modulator may also be used to map code sequences into multi-carrier modulation waveforms. In these systems, an Inverse Fast Fourier Transform (IFFT) processing is performed by the digital modulator to generate the transmission waveforms. In optical fiber networks, transmission waveforms are generated at the digital modulator by modulating a laser light source on and off. In storage applications, the recording unit generates the binary signal waveforms that are written on the storage medium.
The waveform output of the digital modulator enters the physical transmission channel for propagation to the receiver (or recorded on the storage medium). Waveforms transmitted across either wireline or wireless channels are subject to corruption in a variety of ways, for example, by thermal noise, inter-symbol interference, crosstalk interference from other transmissions, multi-path propagation, signal fading, etc. Storage media can be contaminated by media surface defects as well as dust particles, and may also experience intersymbol interference and recording noise at high storage bit densities. These disturbances introduced by the transmission channel (or storage medium) cause errors, which must be corrected by the channel decoder using the error correction capability of the forward error-correction code.
The channel decoder must employ digital processing to be able to efficiently correct errors introduced by the channel in an optimum manner to minimize the probability of decoding error. The role of the digital demodulator (or storage data reading unit) is to convert the analog waveform output of the channel (or storage medium) into a digital form that can be processed by the channel decoder. A hard-decision demodulator attempts to directly reconstruct the transmitted code sequence and outputs this reconstructed code sequence to the channel decoder. A soft-decision demodulator outputs a quantitized digital version of a reconstructed transmitted modulation signal to the channel decoder. This reconstruction process can be designed to maximize signal-to-noise ratio and may include signal equalization to remove intersymbol interference introduced by the channel (or storage medium). In multi-carrier systems, such as orthogonal frequency division multiplexed (OFDM) and discrete multi-tone (DMT) modulations, the digital demodulator also includes the Fast Fourier Transform (FFT) processing that inverts the IFFT operation performed at the digital modulator. The corresponding channel decoders use either hard-decision or soft-decision decoding algorithms to correct channel errors. Soft-decision channel decoding generally performs better than their hard-decision counterpart, however, often at the cost of much higher implementation complexity.
The block diagram in FIG. 1 represents a one-way communication system in which information transmission occurs strictly in one direction, from transmitter to receiver. In this instance, error control can only be provided through the use of forward error-correction coding. In some cases, a communication system can support a two-way exchange of information between transmitter and receiver across the channel. Error control in a two-way communication system can use an error detection and retransmission scheme called automatic repeat request (ARQ). In an automatic repeat request system, a request is sent by the receiver to the transmitter to repeat the transmission of the information when errors are detected. The major advantage of automatic repeat request systems over forward error-correction coding is that error detection requires much simpler decoding complexity than error correction at the channel decoder. Also, an automatic repeat request system adapts to channel conditions in the sense that information is only re-transmitted when channel errors occur. However, high channel error rates can result in a large number of retransmissions and, therefore, low system information throughput rates. A better alternative is a hybrid combination of an automatic repeat request system with forward error-correction coding so that frequent channel error patterns are correctable by the forward error-correction code and retransmissions only occur for infrequent severe channel error conditions when the forward error-correction coding error correction capability is exceeded.
From the viewpoint of the communications system designer, the communications channel consists of the part of the system that cannot be changed. The choice of digital modulation waveforms is often fixed and governed by system bandwidth and power specifications. The choice of digital demodulators, whether soft-decision or hard-decision, is often fixed by practical system complexity constraints. For example, while soft-decision demodulation is viable for asymmetrical digital subscriber loop (ADSL) systems, it cannot be economically implemented for high-speed 10 Gbps OC-192 SONET networks. Consequently, the digital modulator (or data recording unit), the physical channel (or storage medium), and the digital demodulator (or data reading unit) can be combined to form a fixed coding channel for the purposes of designing forward error-correction coding systems. This is shown in the block diagram of FIG. 2. Design of forward error-correction coding systems involves only the design of the channel code and the channel encoder and channel decoder blocks. This model given by the block diagram of FIG. 2 also applies to the design and implementation of network layer coding methods.
The performance of a coded communication system is generally measured in terms of its probability of decoding error and its coding gain over an uncoded system that transmits information at the same rate. There are two types of error probabilities that are commonly considered to evaluate forward error-correction coding methods. One is the block error rate (BLER), which is the probability that a block of information bits is decoded in error at the output of the channel decoder. The other is the bit error rate (BER), which is the probability that an information bit is decoded in error at the output of the channel decoder. Forward error-correction coding methods are designed in coded communication systems to minimize these error probabilities to the extent possible under the constraints of signal power, bandwidth, and implementation complexity. The error probability is often measured as a function of a receiver signal-to-noise ratio, which is often taken to be equal to Eb/N0, which is the ratio of the signal energy per information bit to the noise power spectral density level at the input of the digital demodulator. The other performance measure that is frequently used to measure the performance of a forward error-correction coding method is the coding gain, which is defined to be the reduction in Eb/N0 required to achieve a specified error probability level (BER or BLER) for a coded communication system compared to an uncoded system. Coding gain, which is usually expressed in terms of decibels (dBs), measures the power efficiency gain of a forward error-correction coded communication system compared to an uncoded system.
The design of a forward error-correction coding method for a coded digital communication (or data storage) system often requires a trade-off between the following factors:                1. Coding Gain—Although higher coding gains result in better error probability performance, this may come at a cost of higher data bandwidth expansion from a lower code rate and/or higher implementation complexity using longer codes.        2. Code Rate—Lower code rates can result in higher coding gains at the cost of higher transmission bandwidth requirements.        3. Implementation Complexity—Implementation complexity generally increases when longer blocklength block codes and convolutional codes with larger encoding memory are used to increase coding gain. Implementation complexity also increases when soft-decision decoding is used instead of hard-decision decoding to improve error probability performance.        
Digital communication (data storage) systems often employ multiple forward error-correction coding methods to provide programmable error control configurations that balance some of the above-mentioned factors. The motivation for implementing multiple forward error-correction codes in wireline and wireless digital communications systems is to provide programmability to adapt to changing channel noise conditions. The multiple forward error-correction codes implemented in these systems can then be programmed to dynamically adapt to changing channel conditions. Some magnetic hard disk read channel integrated circuit (IC) vendors have marketed products that incorporate multiple forward error-correction codes with different coding rates. In this application, the programmable forward error-correction coding allows hard disk manufacturers to optimize data integrity for particular disk drive configurations. In another application, larger magnetic hard disk sector sizes can accommodate forward error-correction codes with longer blocklengths to provide higher coding gains. Programmable forward error-correction coding read channel ICs for this application enables a tradeoff between data integrity and disk drive sector size storage efficiency.
However, there is presently a lack of a system that provides adjustable code rates and coding gains that is capable of being dynamically adjusted to adapt to changing channel (storage medium) conditions. In addition, there is presently a lack of a system in which a single encoder and a single decoder can be used to implement all the forward error-correction codes of different code rates.